/*package com.health.mapp.impl;


import java.math.BigDecimal;

import org.apache.log4j.Logger;

import com.health.db.model.GoodsPriceList;
import com.health.db.model.GoodsPriceListTemp;
import com.health.db.model.RegisterOrder;
import com.health.db.service.order.IRegisterOrderService;
import com.health.db.service.sm.IWXPayService;
import com.health.db.service.user.IGoodsPriceListService;
import com.health.mapp.bean.Header;
import com.health.mapp.bean.PayControllerWXReq;
import com.health.mapp.bean.PayControllerWXResp;
import com.health.mapp.interImpl.PayActionServerImpl;
import com.health.mapp.utils.Constant;
import com.health.mapp.utils.DateUtils;
import com.health.mapp.utils.MappMath;
import com.health.mapp.utils.Response;
import com.health.mapp.utils.ResultCode;
import com.health.pay.tencent.common.Signature;
import com.health.pay.tencent.protocol.unifiedorder.UnifiedorderResData;

*//**
 * 微信订单串获取
 * 
 * @author HiRoad
 * 
 * @pramati private Long orderId; //订单号
 * 
 *//*
public class PayControllerWXImpl0517 implements ActionInterface {

	private static final Logger logger = Logger
			.getLogger(PayControllerWXImpl0517.class);

	// service import
	private IRegisterOrderService registerOrderService;
	private IGoodsPriceListService goodsPriceListService;
	private IWXPayService wXPayService;

	*//**
	 * @return the wXPayService
	 *//*
	public IWXPayService getwXPayService() {
		return wXPayService;
	}

	*//**
	 * @param wXPayService
	 *            the wXPayService to set
	 *//*
	public void setwXPayService(IWXPayService wXPayService) {
		this.wXPayService = wXPayService;
	}

	@Override
	public Response execute(Header header, Object reqBean) throws Exception {

		PayControllerWXReq req = (PayControllerWXReq) reqBean;
		PayControllerWXResp _resp = new PayControllerWXResp();
		Long orderId = req.getOrderId();

		if (orderId == 0) {
			_resp.setErrorCode(ResultCode.OPERATION_LAKE_PARAMETER_ERROR);
			_resp.setErrorMsg(ResultCode.OPERATION_LAKE_PARAMETER_ERROR_NOTE);
			return _resp;
		} else {
			RegisterOrder orderInfo = new RegisterOrder();

			orderInfo.setRegisterid(orderId);
			RegisterOrder currRegisterOrder = registerOrderService.selectSimpleSingleByOrderId(orderId);

			// 判断订单状态 订单不存在或者是免费订单
			if (currRegisterOrder == null
					|| currRegisterOrder.getRegistertypeid() == Constant.CONSTANTS_ORDER_FREE_ID_0) {
				_resp.setErrorCode(ResultCode.OPERATION_ORDER_ERROR_3001);
				_resp.setErrorMsg(ResultCode.OPERATION_ORDER_ERROR_3001_NOTE);
				return _resp;
			} else {

				*//******************* 订单数据 **********************************//*
				int goodsId = currRegisterOrder.getGoodsid().intValue(); // 商品编号
				Long temOrderId = orderId; // 订单号
				BigDecimal orderFee = currRegisterOrder.getRegisterTotal(); // 价格
				int goodsQuantity = currRegisterOrder.getGoodsQuantity().intValue(); // 数量
				*//******************* 订单数据 **********************************//*

				GoodsPriceList example = new GoodsPriceList();
				
				Long docId=currRegisterOrder.getAccepterid();
				if(null!=docId){
					example.setSerialIdno(currRegisterOrder.getAccepterid().toString());
				}else{
					example.setSerialIdno(null);
				}
				example.setGoodsid(currRegisterOrder.getGoodsid().intValue());
				example.setColumnid((short) 1);
				GoodsPriceListTemp goodsPriceList = goodsPriceListService
						.selectByGoodsIdDocIdSingle(example);

				if (null != goodsPriceList) {
					double orderFee00 = 0;
					if (null != goodsPriceList.getPrice00()) {
						orderFee00 =  Double.valueOf(goodsPriceList.getPrice00()); // 原价
					} else {
						orderFee00 =  Double.valueOf(goodsPriceList.getPrice()); // 原价
					}

					// 商品名称
					String goodsName = goodsPriceList.getGoodsName(); // 商品名称;
					
					PayActionServerImpl impl = new PayActionServerImpl();
					
					Long payCashId = impl.cleanExpiredPayment(temOrderId,Constant.CONSTANTS_PAYMENT_WEIXIN);
					
					UnifiedorderResData resData;
					if (null!=payCashId) {
						resData = wXPayService.unifiedorder(
								"WEB", "首儿健康汇-" + goodsName, null, null,
								String.valueOf(payCashId)+"-"+String.valueOf(temOrderId), 
								String.valueOf((MappMath.mul(orderFee == null ? 0: orderFee.doubleValue(), 100d)).intValue()),
								null, null, null);
						//保存微信支付生成的字符串
						impl.updateWXNonceStrPaymentLog(payCashId, resData.getNonce_str());
					}else{
						_resp.setErrorCode(ResultCode.OPERATION_ORDER_ERROR_3001);
						_resp.setErrorMsg(ResultCode.OPERATION_ORDER_ERROR_3001_NOTE);
						return _resp;
					}
				
					
					*//*************************************************************//*
					//测试订单作废
					
					CloseOrderReqData closeOrderReqData = new CloseOrderReqData(String.valueOf(temOrderId), resData.getNonce_str());
					wXPayService.closeOrder(closeOrderReqData);
					
					
					*//*************************************************************//*
					
					if (null == resData || resData.getReturn_code() == null) {
						logger
								.error("Case1:统一下单API请求逻辑错误，请仔细检测传过去的每一个参数是否合法，或是看API能否被正常访问");
						_resp
								.setErrorCode(ResultCode.OPERATION_ORDER_ERROR_4001);
						_resp
								.setErrorMsg(ResultCode.OPERATION_ORDER_ERROR_4001_NOTE);
						return _resp;
					}

					if (resData.getReturn_code().equals("FAIL")) {
						// /注意：一般这里返回FAIL是出现系统级参数错误，请检测Post给API的数据是否规范合法
						logger
								.error("Case2:统一下单API系统返回失败，请检测Post给API的数据是否规范合法");
						_resp
								.setErrorCode(ResultCode.OPERATION_ORDER_ERROR_4001);
						_resp
								.setErrorMsg(ResultCode.OPERATION_ORDER_ERROR_4001_NOTE);
						return _resp;
					} else {
						if (!Signature
								.checkIsSignValidFromResponseString(resData
										.getUnifiedorderServiceResponseString())) {
							logger
									.error("Case3:统一下单请求API返回的数据签名验证失败，有可能数据被篡改了");
							_resp
									.setErrorCode(ResultCode.OPERATION_ORDER_ERROR_4001);
							_resp
									.setErrorMsg(ResultCode.OPERATION_ORDER_ERROR_4001_NOTE);
							return _resp;
						}

						if (resData.getResult_code().equals("FAIL")) {
							logger.error("出错，错误码：" + resData.getErr_code()
									+ "     错误信息：" + resData.getErr_code_des());
							logger.error("Case4:【统一下单失败】");
							// 退款失败时再怎么延时查询退款状态都没有意义，这个时间建议要么再手动重试一次，依然失败的话请走投诉渠道进行投诉
							_resp
									.setErrorCode(ResultCode.OPERATION_ORDER_ERROR_4001);
							_resp
									.setErrorMsg(ResultCode.OPERATION_ORDER_ERROR_4001_NOTE);
							return _resp;
						} else {
							// 退款成功
							logger.info("Case5:【统一下单成功】");
							_resp.setErrorCode(ResultCode.OPERATION_SUCCESS);
							_resp.setErrorMsg(ResultCode.OPERATION_SUCCESS_NOTE);
							_resp.setAppid(resData.getAppid());
							_resp.setNoncestr(resData.getNonce_str());
							_resp.setPackageName("Sign=WXPay");
							_resp.setPartnerid(resData.getMch_id());
							_resp.setPrepayid(resData.getPrepay_id());
							_resp.setTimestamp(String.valueOf(DateUtils.millisSecond()));
							String sign = Signature.getSign(_resp.toMap());
							_resp.setSign(sign);
							_resp.setPayAmount(String.valueOf(orderFee==null?0:orderFee.setScale(2)));
							return _resp;
						}
					}

				} else {
					_resp.setErrorCode(ResultCode.OPERATION_ORDER_ERROR_4001);
					_resp
							.setErrorMsg(ResultCode.OPERATION_ORDER_ERROR_4001_NOTE);
					return _resp;
				}

			}
		}

	}

	public IRegisterOrderService getRegisterOrderService() {
		return registerOrderService;
	}

	public void setRegisterOrderService(
			IRegisterOrderService registerOrderService) {
		this.registerOrderService = registerOrderService;
	}

	public IGoodsPriceListService getGoodsPriceListService() {
		return goodsPriceListService;
	}

	public void setGoodsPriceListService(
			IGoodsPriceListService goodsPriceListService) {
		this.goodsPriceListService = goodsPriceListService;
	}

}
*/